unit ConfiguracoesLocais;

interface

uses IniFiles, SysUtils, Forms, Config;

type
  TConfiguracoesLocais = class
  private
    FServidor             : string;
    FUsuario              : string;
    FSenha                : string;
    FCaminho              : string;
    FCaminhoRelatorios    : string;
    FImpressoraMatricial  : string;
    FImpressoraEtiquetas  : string;
    FEtiquetasTemperatura : string;
    FEtiquetasOpcao       : integer; {1-Impressao Comum; 2-Arquivo DBF; 3-PPL-A}
    FEtiquetasModelo      : integer; {1-Tabacaria Modelo 1; 2-Otica; 3-Tabacaria Modelo 2}
    FConfigNFE            : string;
    FNfeConfig            : TConfig;
    FUsaNFe               : boolean;
  public
    property Servidor             : string read FServidor             write FServidor;
    property Usuario              : string read FUsuario              write FUsuario;
    property Senha                : string read FSenha                write FSenha;
    property Caminho              : string read FCaminho              write FCaminho;
    property CaminhoRelatorios    : string read FCaminhoRelatorios    write FCaminhoRelatorios;
    property ImpressoraMatricial  : string read FImpressoraMatricial  write FImpressoraMatricial;
    property ImpressoraEtiquetas  : string read FImpressoraEtiquetas  write FImpressoraEtiquetas;
    property ConfigNFE            : string read FConfigNFE            write FConfigNFE;
    property UsaNFe               : Boolean read FUsaNFe              write FUsaNFe;
    property NFeConfig            : TConfig read FNfeConfig           write FNfeConfig;
    property EtiquetasTemperatura : string read FEtiquetasTemperatura write FEtiquetasTemperatura;
    property EtiquetasOpcao       : integer read FEtiquetasOpcao      write FEtiquetasOpcao;
    property EtiquetasModelo      : integer read FEtiquetasModelo     write FEtiquetasModelo;

    procedure Salvar;virtual;abstract;
    procedure Carregar;virtual;abstract;
    constructor Create;
    destructor Destroy; override;
  end;

  TConfigIni = class(TConfiguracoesLocais)
  public
    procedure Carregar;override;
    procedure Salvar;override;
  end;

implementation

uses Math;


{ TConfiguracoesLocais }

constructor TConfiguracoesLocais.Create;
begin
  Carregar;
  if (ConfigNFE <> '') and FileExists( ConfigNFE ) then
    NFeConfig := TConfig.Create(ConfigNFE)
  else
    NFeConfig := nil;
end;

destructor TConfiguracoesLocais.Destroy;
begin
  If UsaNFe and (NFeConfig = nil) then
    NfeConfig.Free;
  inherited;
end;

{ TConfigIni }

procedure TConfigIni.Carregar;
var
  Ini : TIniFile;
begin
  Ini                 := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'BANCO.ini');
  Servidor            := Ini.ReadString('CONFBANCO','SERVIDOR','LOCALHOST');
  Caminho             := Ini.ReadString('CONFBANCO','CAMINHO','C:\GESTOR\DADOS\GESTOR_DADOS.FDB');
  Usuario             := Ini.ReadString('CONFBANCO','USUARIO','SYSDBA');
  Senha               := Ini.ReadString('CONFBANCO','SENHA','masterkey');
  ImpressoraMatricial := Ini.ReadString('RELATORIOS','IMPRESSORA_NF', 'LPT1');
  ImpressoraEtiquetas := Ini.ReadString('RELATORIOS','IMPRESSORA_ETI','COM');
  EtiquetasTemperatura:= Ini.ReadString('ETIQUETAS','ETI_TEMPERATURA','12');
  EtiquetasOpcao      := Ini.ReadInteger('ETIQUETAS','ETI_OPCAO',3);
  EtiquetasModelo     := Ini.ReadInteger('ETIQUETAS','ETI_MODELO',2);
  ConfigNFE           := Ini.ReadString('NFE','CONFIG_NFE','');
  UsaNFe              := Ini.ReadBool('NFE','USANFE',false);
  Ini.Free;
end;

procedure TConfigIni.Salvar;
var
  Ini : TIniFile;
begin
  Ini := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'BANCO.ini');
  Ini.WriteString('CONFBANCO','SERVIDOR',Servidor);
  Ini.WriteString('CONFBANCO','CAMINHO',Caminho);
  Ini.WriteString('CONFBANCO','USUARIO',Usuario);
  Ini.WriteString('CONFBANCO','SENHA',Senha);
  Ini.WriteString('RELATORIOS', 'IMPRESSORA_NF', ImpressoraMatricial);
  Ini.WriteString('RELATORIOS','IMPRESSORA_ETI', ImpressoraEtiquetas);
  Ini.WriteString('ETIQUETAS','ETI_TEMPERATURA',EtiquetasTemperatura);
  Ini.WriteInteger('ETIQUETAS','ETI_OPCAO',EtiquetasOpcao);
  Ini.WriteInteger('ETIQUETAS','ETI_MODELO',EtiquetasModelo);
  Ini.WriteString('NFE','CONFIG_NFE',ConfigNFE);
  Ini.WriteBool('NFE','USANFE',UsaNFe);
  Ini.Free;
end;

end.
